package game.controler.gestionnaires.elementjeu;

import game.impl.objets.objet.*;
import game.model.objets.Objet;
import game.impl.objets.objet.p0_cle_chambre;
import java.util.ArrayList;
import java.util.HashMap;

/**
 *
 * @author Gab'z
 */
public class GestionnaireObjets {

    private static GestionnaireObjets Gobjets = null;
    private HashMap<String, Objet> listeObjets = new HashMap<String, Objet>();
    private HashMap<String, ArrayList<String>> listesIdPlanObjets = new HashMap<String, ArrayList<String>>();

    private GestionnaireObjets() {
        System.out.println("Initialisation des objets");
        initialiserObjets();
    }

    public static GestionnaireObjets getGobjets() {
        if (Gobjets == null) {
            Gobjets = new GestionnaireObjets();
        }
        return Gobjets;
    }

    public Objet getObjet(String ID) {
        return listeObjets.get(ID);
    }

    private void initialiserObjets() {

        // A répéter pour chaque objet du jeu

        // PLAN_0 (à supprimer au final, sauf la clé))
       // ajouterObjet(new balletennis());
        ajouterObjet(new p0_cle_chambre());
        //p0_calepin_medecin est un élément de décors

        
        // PLAN 1 (couloir)

        // PLAN 2 (placard)
        ajouterObjet(new p2_boite_somnifere());
        ajouterObjet(new p2_graines_oiseau());

        // PLAN 3 (sas gardé)

        // PLAN 4 (bureau du médecin)
        ajouterObjet(new p4_lettre_code_confidentiel());
        ajouterObjet(new p4_cle_patio());
        ajouterObjet(new p4_blouse());

        // PLAN 5 (patio)
        ajouterObjet(new p5_souris_mecanique());
    }

    private void ajouterObjet(Objet objet) {
        listeObjets.put(objet.getId(), objet);
        ArrayList<String> listeStringObjets = listesIdPlanObjets.get(objet.getIdPlan());
        if (listeStringObjets == null) {
            listeStringObjets = new ArrayList<String>(0);
        }
        listeStringObjets.add(objet.getId());
        listesIdPlanObjets.put(objet.getIdPlan(), listeStringObjets);
    }

    public ArrayList<String> getListeObjetsPlan(String idPlanCourant) {
        System.out.println("getListeObjetsPlan id = " + idPlanCourant);
        ArrayList<String> listeObjetsPlan = listesIdPlanObjets.get(idPlanCourant);
        if (listeObjetsPlan == null) {
            return new ArrayList<String>(0);
        }
        return listeObjetsPlan;
    }
}
